package com.example.barnes.ummo.ummoAPI; import android.app.Activity; import android.content.ComponentName; import android.content.Context; import android.content.Intent; import android.content.ServiceConnection; import android.content.SharedPreferences; import android.os.IBinder; import android.preference.PreferenceManager; import android.util.Log; import com.example.barnes.ummo.R; import org.json.JSONArray; import org.json.JSONException; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.net.MalformedURLException; import java.net.URL; import java.util.ArrayList; import java.util.List; /** * Created by barnes on 11/1/15. */ public class QUser { private Activity callingActivity; private String uCellNumber; private boolean registered = false; private String uName; private boolean mBound=false; private UmmoDaemon daemon; //private UmmoDaemon ummoDaemon; private ServiceConnection mConnection = new ServiceConnection() { @Override public void onServiceConnected(ComponentName className, IBinder service) { Log.e("Function","onServiceConnected"); // We've bound to LocalService, cast the IBinder and get LocalService instance UmmoDaemon.LocalBinder binder = (UmmoDaemon.LocalBinder) service; daemon = binder.getService(); mBound = true; daemon.setCalee(callingActivity); daemon.getUpadates(QUser.this); daemon.makeNotification(); if(daemon==null) { Log.e("Error3","Demon is NULL"); } } @Override public void onServiceDisconnected(ComponentName arg0) { mBound = false; } }; public boolean isRegistered() { return registered; } public void setCallingActivity(Activity activity) { callingActivity = activity; } public void register(final String name, final String cellNumber) { try { uName = name; uCellNumber = cellNumber; String urlString = callingActivity.getString(R.string.SERVER_URL) + "user/register"; final FormPoster formPoster = new FormPoster(new URL(urlString)); formPoster.add("cellnum", cellNumber); formPoster.add("alias", name); formPoster.add("data", "data"); Thread thread = new Thread(new Runnable() { @Override public void run() { try { InputStream is = formPoster.post(); BufferedReader rd = new BufferedReader(new InputStreamReader(is)); final String uname = name; final String cellphone = cellNumber; final StringBuilder response = new StringBuilder(); // or StringBuffer if not Java 5+ String line; while ((line = rd.readLine()) != null) { response.append(line); response.append('\r'); } rd.close(); final String objString = response.toString(); callingActivity.runOnUiThread(new Runnable() { @Override public void run() { ((QUserListner) callingActivity).userRegistered(objString); } }); //This would mean the registration was compleate // //JSONObject obj = new JSONObject(objString); //Set the Shared Preferences for User Name and CellNumber SharedPreferences sp = PreferenceManager .getDefaultSharedPreferences(callingActivity); sp.edit().putString(callingActivity.getString(R.string.PREF_USER_NAME), uname).apply(); sp.edit().putString(callingActivity.getString(R.string.PREF_USER_CELLNUMBER), cellphone).apply(); sp.edit().putBoolean(callingActivity.getString(R.string.PREF_USER_REGISTERED), true).apply(); //Log.d("Response",id); //Toast.makeText(calee,"Sent Information",Toast.LENGTH_LONG).show(); } catch (final IOException ioe) { Log.e("IO Exception", ioe.toString()); Log.e("IO Exception", ioe.toString()); callingActivity.runOnUiThread(new Runnable() { @Override public void run() { ((QUserListner) callingActivity).userRegistrationError(ioe.toString()); } }); } } }); thread.start(); } catch (MalformedURLException me) { Log.e("NetWork Exception", me.toString()); } } public QUser(Activity activity) { setCallingActivity(activity); SharedPreferences sp = PreferenceManager .getDefaultSharedPreferences(callingActivity); registered = sp.getBoolean(callingActivity.getString(R.string.PREF_USER_REGISTERED), false); if (registered) { uName = sp.getString(callingActivity.getString(R.string.PREF_USER_NAME), "NO NAME"); uCellNumber = sp.getString(callingActivity.getString(R.string.PREF_USER_CELLNUMBER), "NO NUMBER"); // Intent intent = new Intent(Register.this, MainActivity.class); // startActivity(intent); // finish(); Log.d("prefs", "registered"); } //startUpdatesDaemon(); if (daemon==null) { Log.e("Error","Daemon is still null"); } } public void getAvailableQs() { try { String urlString = callingActivity.getString(R.string.SERVER_URL) + "/user/availQs"; final FormPoster formPoster = new FormPoster(new URL(urlString)); //formPoster.add("uid",uCellNumber); formPoster.add("data", "data"); Thread thread = new Thread(new Runnable() { @Override public void run() { try { InputStream is = formPoster.post(); BufferedReader rd = new BufferedReader(new InputStreamReader(is)); final StringBuilder response = new StringBuilder(); // or StringBuffer if not Java 5+ String line; while ((line = rd.readLine()) != null) { response.append(line); response.append('\r'); } rd.close(); final String objString = response.toString(); callingActivity.runOnUiThread(new Runnable() { @Override public void run() { ((QUserListner) callingActivity).allQsReady(objString); } }); } catch (final IOException ioe) { callingActivity.runOnUiThread(new Runnable() { @Override public void run() { ((QUserListner) callingActivity).allQError(ioe.toString()); } }); } } }); thread.start(); } catch (MalformedURLException me) { Log.e("NetWork Exception", me.toString()); } } public void setName() { } public UmmoDaemon getDaemon() { return daemon; } public void setCellNumber() { } public String getName() { return uName; } public String getCellNumb() { return uCellNumber; } public void getCategories() { try { String urlString = callingActivity.getString(R.string.SERVER_URL) + "user/categories"; final FormPoster formPoster = new FormPoster(new URL(urlString)); formPoster.add("user",uCellNumber); String token = PreferenceManager.getDefaultSharedPreferences(callingActivity).getString("gcmToken","token"); formPoster.add("token",token); formPoster.add("data", "data"); Thread thread = new Thread(new Runnable() { @Override public void run() { try { InputStream is = formPoster.post(); BufferedReader rd = new BufferedReader(new InputStreamReader(is)); final StringBuilder response = new StringBuilder(); // or StringBuffer if not Java 5+ String line; while ((line = rd.readLine()) != null) { response.append(line); response.append('\r'); } rd.close(); final String objString = response.toString(); callingActivity.runOnUiThread(new Runnable() { @Override public void run() { ((QUserListner) callingActivity).categoriesReady(objString); } }); } catch (final IOException ioe) { callingActivity.runOnUiThread(new Runnable() { @Override public void run() { ((QUserListner) callingActivity).categoriesError(ioe.toString()); } }); } } }); thread.start(); } catch (MalformedURLException me) { Log.e("NetWork Exception", me.toString()); } } public void getQ(String qcell) { try { String urlString = callingActivity.getString(R.string.SERVER_URL) + "user/getQ"; final FormPoster formPoster = new FormPoster(new URL(urlString)); formPoster.add("qid",qcell); formPoster.add("data", "data"); Thread thread = new Thread(new Runnable() { @Override public void run() { try { InputStream is = formPoster.post(); BufferedReader rd = new BufferedReader(new InputStreamReader(is)); final StringBuilder response = new StringBuilder(); // or StringBuffer if not Java 5+ String line; while ((line = rd.readLine()) != null) { response.append(line); response.append('\r'); } rd.close(); final String objString = response.toString(); callingActivity.runOnUiThread(new Runnable() { @Override public void run() { ((QUserListner) callingActivity).qReady(objString); } }); } catch (final IOException ioe) { callingActivity.runOnUiThread(new Runnable() { @Override public void run() { ((QUserListner) callingActivity).qError(ioe.toString()); } }); } } }); thread.start(); } catch (MalformedURLException me) { Log.e("NetWork Exception", me.toString()); } } public void clearQList(){ String arrString = PreferenceManager.getDefaultSharedPreferences(callingActivity).getString("JOINEDQS_LIST_PREF","PREF"); if (arrString!="PREF"){ try { JSONArray arr = new JSONArray(arrString); for (int i=0;i<arr.length();i++){ new JoinedQ().deleateQ(arr.getString(i),callingActivity); } } catch (JSONException jse){ Log.e("CLEARQS",jse.toString()); } } } public List<JoinedQ> getLocalJoinedQList(){ List<JoinedQ> qlist = new ArrayList<JoinedQ>(); String arrString = PreferenceManager.getDefaultSharedPreferences(callingActivity).getString("JOINEDQS_LIST_PREF","PREF"); if (arrString!="PREF"){ try { JSONArray arr = new JSONArray(arrString); for (int i=0;i<arr.length();i++){ JoinedQ joinedQ = new JoinedQ(); joinedQ.readByQId(arr.getString(i),callingActivity); Log.d("QNAME",joinedQ.getqName()); qlist.add(joinedQ); } } catch (JSONException jse){ Log.e("LOCALQLIST",jse.toString()); } } return qlist; } public void updateJoinedQList(JSONArray arr){ clearQList(); try { JSONArray jsonArray = new JSONArray(); for(int i =0; i<arr.length();i++){ Log.d("ARRAYLENGTH",String.valueOf(arr.length())); JoinedQ joinedQ= new JoinedQ(arr.getJSONObject(i),uCellNumber); jsonArray.put(joinedQ.getqId()); } PreferenceManager.getDefaultSharedPreferences(callingActivity).edit().putString("JOINEDQS_LIST_PREF", jsonArray.toString()).commit(); } catch (JSONException jse){ Log.e("UPDTAEJQLIST",jse.toString()); } try { JSONArray jsonArray = new JSONArray(); for(int i =0; i<arr.length();i++){ Log.d("ARRAYLENGTH",String.valueOf(arr.length())); JoinedQ joinedQ= new JoinedQ(arr.getJSONObject(i),uCellNumber); joinedQ.save(callingActivity,this); } } catch (JSONException jse){ Log.e("UPDTAEJQLIST",jse.toString()); } } public void getProvides() { } public boolean isQJoined(String q_id){ boolean retval = false; String arrString = PreferenceManager.getDefaultSharedPreferences(callingActivity).getString("JOINEDQS_LIST_PREF","PREF"); if (arrString!="PREF"){ try { JSONArray arr = new JSONArray(arrString); for (int i=0;i<arr.length();i++){ Log.d("ISJOINED",arr.getString(i)); Log.d("QIDISJ",q_id); if(q_id.equals(arr.getString(i))){ retval=true; } } } catch (JSONException jse){ Log.e("ISQJOINED",jse.toString()); } } else { Log.e("ISQJOINED",arrString); } return retval; } public void updateJoinedQs() { try { String urlString = callingActivity.getString(R.string.SERVER_URL) + "/user/joinedQs"; final FormPoster formPoster = new FormPoster(new URL(urlString)); formPoster.add("uid", uCellNumber); formPoster.add("data", "data"); Thread thread = new Thread(new Runnable() { @Override public void run() { try { InputStream is = formPoster.post(); BufferedReader rd = new BufferedReader(new InputStreamReader(is)); final StringBuilder response = new StringBuilder(); // or StringBuffer if not Java 5+ String line; while ((line = rd.readLine()) != null) { response.append(line); response.append('\r'); } rd.close(); final String objString = response.toString(); try{ JSONArray arr = new JSONArray(objString); updateJoinedQList(arr); } catch (JSONException jse){ Log.e("JSONERR",jse.toString()); } callingActivity.runOnUiThread(new Runnable() { @Override public void run() { ((QUserListner) callingActivity).updated(objString); } }); Log.d("QUSER_UPDATE",response.toString()); } catch (final IOException ioe) { callingActivity.runOnUiThread(new Runnable() { @Override public void run() { ((QUserListner) callingActivity).updateError(ioe.toString()); } }); Log.e("quser",ioe.toString()); } } }); thread.start(); } catch (MalformedURLException me) { Log.e("NetWork Exception", me.toString()); } } public void joinQ(String qCellnumber) { try { String urlString = callingActivity.getString(R.string.SERVER_URL) + "/user/joinQ"; final FormPoster formPoster = new FormPoster(new URL(urlString)); formPoster.add("uid", uCellNumber); formPoster.add("qid", qCellnumber); formPoster.add("data", "data"); Thread thread = new Thread(new Runnable() { @Override public void run() { try { InputStream is = formPoster.post(); BufferedReader rd = new BufferedReader(new InputStreamReader(is)); final StringBuilder response = new StringBuilder(); // or StringBuffer if not Java 5+ String line; while ((line = rd.readLine()) != null) { response.append(line); response.append('\r'); } rd.close(); final String objString = response.toString(); callingActivity.runOnUiThread(new Runnable() { @Override public void run() { ((QUserListner) callingActivity).qJoined(objString); } }); } catch (final IOException ioe) { callingActivity.runOnUiThread(new Runnable() { @Override public void run() { ((QUserListner) callingActivity).qJoinedError(ioe.toString()); } }); } } }); thread.start(); } catch (MalformedURLException me) { Log.e("NetWork Exception", me.toString()); } } public void leaveQ(String qCellnumber) { try { String urlString = callingActivity.getString(R.string.SERVER_URL) + "/user/leaveQ"; final FormPoster formPoster = new FormPoster(new URL(urlString)); formPoster.add("uid", uCellNumber); formPoster.add("qid", qCellnumber); formPoster.add("data", "data"); Thread thread = new Thread(new Runnable() { @Override public void run() { try { InputStream is = formPoster.post(); BufferedReader rd = new BufferedReader(new InputStreamReader(is)); final StringBuilder response = new StringBuilder(); // or StringBuffer if not Java 5+ String line; while ((line = rd.readLine()) != null) { response.append(line); response.append('\r'); } rd.close(); final String objString = response.toString(); callingActivity.runOnUiThread(new Runnable() { @Override public void run() { ((QUserListner) callingActivity).qLeft(objString); } }); } catch (final IOException ioe) { callingActivity.runOnUiThread(new Runnable() { @Override public void run() { ((QUserListner) callingActivity).qLeftError(ioe.toString()); } }); } } }); thread.start(); } catch (MalformedURLException me) { Log.e("NetWork Exception", me.toString()); } } public void startUpdatesDaemon() { Log.e("daemon","about To satrt"); Intent intent = new Intent(callingActivity, UmmoDaemon.class); if((callingActivity!=null)||(mConnection!=null)) { callingActivity.bindService(intent, mConnection, Context.BIND_AUTO_CREATE); Log.e("Activity","Calling activity is not null"); } else { Log.e("Fuck","Calling activity is null"); } } public void makeNotification() { if(daemon == null) { Log.e("DAEMON", "Still Null"); } else { Log.e("DAEMON","YAY ITS NOT NULL"); } } public ServiceConnection getServiceConnection() { return new ServiceConnection() { @Override public void onServiceConnected(ComponentName className, IBinder service) { // We've bound to LocalService, cast the IBinder and get LocalService instance UmmoDaemon.LocalBinder binder = (UmmoDaemon.LocalBinder) service; daemon = binder.getService(); daemon.setCalee((QUser.this).callingActivity); } @Override public void onServiceDisconnected(ComponentName arg0) { //mBound = false; } }; } public void getJoinedQs() { try { String urlString = callingActivity.getString(R.string.SERVER_URL) + "/user/getJoinedQs"; final FormPoster formPoster = new FormPoster(new URL(urlString)); formPoster.add("uid", uCellNumber); formPoster.add("data", "data"); Thread thread = new Thread(new Runnable() { @Override public void run() { try { InputStream is = formPoster.post(); BufferedReader rd = new BufferedReader(new InputStreamReader(is)); final StringBuilder response = new StringBuilder(); // or StringBuffer if not Java 5+ String line; while ((line = rd.readLine()) != null) { response.append(line); response.append('\r'); } rd.close(); final String objString = response.toString(); callingActivity.runOnUiThread(new Runnable() { @Override public void run() { ((QUserListner) callingActivity).gotJoinedQs(objString); } }); } catch (final IOException ioe) { callingActivity.runOnUiThread(new Runnable() { @Override public void run() { ((QUserListner) callingActivity).joinedQsError(ioe.toString()); } }); } } }); thread.start(); } catch (MalformedURLException me) { Log.e("NetWork Exception", me.toString()); } } }